package Algorithm;

import java.util.ArrayList;

import model.Homem;
import model.Mulher;
import model.PaginaHomem;
import model.PaginaMulher;
import model.Resultado;
import pesistencia.AcessoBanco;

public class Algoritimo {
	AcessoBanco ab = new AcessoBanco();
	ArrayList<Homem> table_homem=ab.carregarTabelaHomem();
	ArrayList<Mulher> table_mulher = ab.carregarTabelaMulher();
	
	
//	public ArrayList<Homem> mergeJoin(){
//		table_homem=ab.carregarTabelaHomem();
//		table_mulher = ab.carregarTabelaMulher();
//		for(int i=0;i<table_homem.size();i++){
//			for(int j=i+1;j<table_homem.size();j++){
//				if(Integer.parseInt(table_homem.get(i).getIdhomem())<Integer.parseInt(table_homem.get(j).getIdhomem())){
//					int temp = table_homem.se
//					
//				}
//			}
//		}
//
//		
//		return table_homem;
//		
//	}
	private ArrayList<PaginaHomem> carregarPaginaHomem(){
		ArrayList<PaginaHomem> lista_paginas_homem = new ArrayList<PaginaHomem>();
		for (Homem homem : table_homem) {
			PaginaHomem ph = new PaginaHomem();
			for (int i=0;i<3;i++) {
				if(i==0){
					ph.setH1(homem);
				}
				if(i==1){
					ph.setH2(homem);
				}
				if(i==2){
					ph.setH3(homem);
				}
			}
			lista_paginas_homem.add(ph);
		}
		return lista_paginas_homem;
	}
	
	private ArrayList<PaginaMulher> carregarPaginaMulher(){
		ArrayList<PaginaMulher> lista_paginas_mulher = new ArrayList<PaginaMulher>();
		
		
		for (Mulher mulher : table_mulher) {
			PaginaMulher pm = new PaginaMulher();
			
			for (int i=0;i<3;i++) {
				if(i==0){
					pm.setM1(mulher);
				}
				if(i==1){
					pm.setM2(mulher);
				}
				if(i==2){
					pm.setM3(mulher);
				}
			}
			lista_paginas_mulher.add(pm);
		}
		return lista_paginas_mulher;
		
	}
	//
	public ArrayList<Resultado> blockNestedLoopJoin(){
		ArrayList<PaginaHomem> paginasHomem = carregarPaginaHomem();
		ArrayList<PaginaMulher> paginasMulher = carregarPaginaMulher();
		ArrayList<Resultado> hm = new ArrayList<Resultado>();
		for (PaginaHomem paginaHomem : paginasHomem) {
			for (PaginaMulher paginaMulher : paginasMulher) {
					
				if(paginaHomem.getH1().getIdhomem().equals(paginaMulher.getM1().getIdhomem())){
						Resultado r = new Resultado();
						r.setIdhomemfk(paginaMulher.getM1().getIdhomem());
						r.setIdhomempk(paginaHomem.getH1().getIdhomem());
						r.setNomehomem(paginaHomem.getH1().getName());
						r.setNomemulher(paginaMulher.getM1().getName());
						hm.add(r);
					}
					if(paginaHomem.getH2().getIdhomem()==paginaMulher.getM2().getIdhomem()){
						Resultado r = new Resultado();
						r.setIdhomemfk(paginaMulher.getM2().getIdhomem());
						r.setIdhomempk(paginaHomem.getH2().getIdhomem());
						r.setNomehomem(paginaHomem.getH2().getName());
						r.setNomemulher(paginaMulher.getM2().getName());
						hm.add(r);
					}
					if(paginaHomem.getH3().getIdhomem()==paginaMulher.getM3().getIdhomem()){
						Resultado r = new Resultado();
						r.setIdhomemfk(paginaMulher.getM3().getIdhomem());
						r.setIdhomempk(paginaHomem.getH3().getIdhomem());
						r.setNomehomem(paginaHomem.getH3().getName());
						r.setNomemulher(paginaMulher.getM3().getName());
						hm.add(r);
					}
			}
			
		}
		return hm;
	}

}
